package yun2.shuxue;
/**
 * nums = {1,2,3};
 * {{},{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}}
 * 
 * nums = {1,2,3,4};
 * 
 * 数组长度为4，需要循环处理的次数 2^4(n)=16，从0到z^n-1
 * 
 * 0 0000 {} 二进制数字长度 
 * 1 0001 {4}
 * 2 0010 {3}
 * 3 0011 {3,4}
 * 
 * ……
 * 
 * 14 1110 {1,2,3}   1110 111 11 10 01 00
 * 15 1111 {1,2,3,4}
 * 
 * 
 */
public class BinaryGetSet {

	public static void main(String[] args) {
			
		int[] nums = {1,2,3,4};
		
		for(int i=0;i<=Math.pow(2, nums.length)-1;i++) {
			
			System.out.print("{");
			int n = i;//存储当前要被转换为二进制的i
			int index = 0;//当前是第几次除以2
			//除2取余,一个while循环结果就是一个集合
			while(n>0) {
				if(n%2 == 1) {
					if(n>2) {
						System.out.print(nums[index] + " ");
					}else {
						System.out.print(nums[index]);
					}
					
				}
				index++;
				n = n/2;				
			}	
			System.out.println("}");
		}		
	}
}
